package bankteam.dao;

import java.sql.*;
import java.util.*;

import bankteam.excepcion.DAOExcepcion;
import bankteam.interfaces.consultaPoderInterface;
import bankteam.modelo.consultaPoderes;
import bankteam.util.ConexionBD;

public class consultaPoderDAO extends BaseDAO implements consultaPoderInterface{

	@Override
	public Collection<consultaPoderes> consultaPoderes(String cliRUC, String nroDOC,int codGrupBast, 
			int codTipInter) throws Exception {
				
		String query = 
				"Select  Gru.Des_Grupo_Bastanteo, Abr_Poder, Replace(Date_Format(det.Fec_Vencimiento,Get_Format(Date, 'EUR')),'.','/') As Fec_Vencimiento,ti.des_Tipo_intervencion, Replace(Date_Format(det.Fec_Vencimiento,Get_Format(Date, 'EUR')),'.','/') As Vigencia "+
				"From Cliente Cli "+
				"Inner Join Representante Rep On Rep.Cod_Cliente = Cli.Cod_Cliente "+
				"Inner Join Grupo_Bastanteo Gru On Gru.Cod_Grupo_Bastanteo = Rep.Grupo_Bastanteo_Cod_Grupo_Bastanteo "+
				"Inner Join Detalle_Bastanteo Det On Det.Grupo_Bastanteo_Cod_Grupo_Bastanteo = Gru.Cod_Grupo_Bastanteo "+
				"Inner Join Poder Pod On Pod.Cod_Poder = Det.Poder_Cod_Poder "+
				"Inner Join Bastanteo Bas On Bas.Cod_Bastanteo = Det.Bastanteo_Cod_Bastanteo And Bas.Cliente_Cod_Cliente = Cli.Cod_Cliente "+
				"Left Join Tipo_Intervencion TI On TI.Cod_Tipo_Intervencion =  Det.Cod_Tipo_Intervencion "+
				"Where Cli.RUC = ? "+
				  "And Rep.Num_Documento = ?" +
				  "And ( Gru.Cod_Grupo_Bastanteo = ? OR  TI.Cod_Tipo_Intervencion = ?) "+
				  "And Fec_Vencimiento > Curdate()";
		
		Collection<consultaPoderes> lista = new ArrayList<consultaPoderes>();
		
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con  = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setString(1,cliRUC);
			stmt.setString(2,nroDOC);
			stmt.setInt(3,codGrupBast);
			stmt.setInt(4,codTipInter);
			rs = stmt.executeQuery();
			
			while (rs.next()) {
				consultaPoderes cons = new consultaPoderes();
				cons.setDesGrupoBastanteo(rs.getString(1));
				cons.setDesPoder(rs.getString(2));
				cons.setFechVenc(rs.getString(3));
				cons.setTipIntervencion(rs.getString(4));
				cons.setVigencia(rs.getString(5));
				lista.add(cons);
			}
			
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			//throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
			
		}
		
		return lista;
		
	}
	
}
	
	



	

